技术文档丨Apollo Docker 镜像构建过程
概览
构建 CyberRT 镜像
构建 Apollo 开发图像
构建 Docker 镜像
提示
添加新程序
Apollo 在 Docker 容器中运行,基本上有两种类型的 Apollo Docker 镜像:CyberRT 和 Dev。CyberRT 映像仅适用于只想使用 CyberRT 框架的开发人员,而 Dev 映像则用于构建和运行整个 Apollo 项目。
dev.aarch64图像截至今天仍然是在制品。预计将在未来几个月内完成。
键入./build_docker.sh -h帮助获取信息:
Usage:
build_docker.sh -f <Dockerfile> [Options]
Available options:
-c,--clean Use "--no-cache=true" for docker build
-m,--mode "build" for build everything from source if possible, "download" for using prebuilt ones
-g,--geo Enable geo-specific mirrors to speed up build. Currently "cn" and "us" are supported.
-d,--dist Whether to build stable("stable") or experimental("testing") Docker images
-t,--timestamp Specify Cyber image timestamp to build Dev image from it. Format: yyyymmdd_hhmm (e.g 20210205_1520)
--dry Dry run (for testing purpose)
-h,--help Show this message and exit
E.g.,
build_docker.sh -f cyber.x86_64.dockerfile -m build -g cn
build_docker.sh -f dev.aarch64.dockerfile -m download -d testing
在这里,该-g/--geo选项用于启用基于地理位置的设置(APT 和 PYPI 镜像等)。现在支持两种代码 ( us& cn),默认为us。
要构建最新的 CyberRT 映像,只需运行:
./build_docker.sh -f cyber.<TARGET_ARCH>.dockerfile
中国大陆用户可以指定-g cn加快构建过程:
./build_docker.sh -f cyber.<TARGET_ARCH>.dockerfile -g cn
运行以下命令来构建 Apollo Dev 映像:
build_docker.sh -f dev.<TARGET_ARCH>.dockerfile
成功后,如下所示的消息将显示在屏幕底部。
Successfully built baca71e567e6
Successfully tagged apolloauto/apollo:dev-x86_64-18.04-20200824_0339
Built new image apolloauto/apollo:dev-x86_64-18.04-20200824_0339
Apollo Runtime Docker 与 Release Build 输出结合使用,以便于部署。您可以运行以下命令来构建自己的 Apollo Runtime Docker 镜像。
./apollo.sh release -c -r
cd docker/build
# Copy the generated package list for docker build
cp /apollo/output/syspkgs.txt .
cp runtime.x86_64.dockerfile.sample runtime.x86_64.dockerfile
bash build_docker.sh -f runtime.x86_64.dockerfile
注意:Apollo Runtime Docker 仅支持 x86_64,因为 Release Build 尚未准备好用于 Aarch64。
建立日志
CyberRT 和 Dev Docker 镜像的构建日志位于 /opt/apollo/build.log,其中包含 Docker 构建期间依赖包的下载链接和校验和。
启用本地 HTTP 缓存以加快构建速度
你可以通过在运行 Docker的主机上执行以下步骤来启用本地 HTTP 缓存以加快包下载:
将所有必备软件包下载到一个目录(例如$HOME/archive),其中包含构建日志中列出的url。注意他们的校验和。
切换到该存档目录,并在端口8388启动本地 HTTP 缓存服务器。
nohup python3 -m http.server 8388 &
注意:本地 HTTP 缓存机制的另一个优点是,它对最终图像大小的影响很小。即使缓存的包丢失或损坏,仍然可以从原始 URL 下载。
重新运行build_docker.sh。
新安装程序的最佳实践是:
Well tested.
使其正常工作,并且不要破坏其他安装程序,例如库的不兼容版本。
Standalone.
有关于基底的最小假设,这意味着,你可以依赖于基本图像和installers/installer_base.sh. 除此之外,您应该在自己的安装程序中安装所有依赖项。
Thin.
它将在最终图像中生成一个新图层,因此请使其尽可能薄。例如,清理所有中间文件:
wget xxx.zip
# Unzip, make, make install
rm -fr xxx.zip xxx
Cross-architecture.
完全适用于不同的体系结构,例如x86_64和 aarch64。
*《Apollo Docker Image Build Process》
https://github.com/ApolloAuto/apollo/blob/master/docker/build/README.md
以上就是“Apollo Docker 镜像构建过程”的全部内容,如果大家对Apollo开放平台和套件感兴趣,可以添加『Apollo小哥哥』(微信号:apollo_xzs)为好友,进入技术交流群,跟开发者们一起讨论哦。